1. Introduction and Field
The present invention relates to a method for using RAM buffers with multiple accesses in flash-based storage systems. Such RAM buffers enable improved read and write performance of flash-based storage systems, achieved by overlapping read and write operations to the RAM.
2. Prior Art
Using flash memory as a storage media commonly has the 2 following features:
1. Data written to flash generally should be protected by error detection codes and/or error correction codes (EDC/ECC). When the data is read from the flash, EDC/ECC allow the system to determine whether an error is present, and optionally to correct it. The correction can take place in any part of the EDC/ECC-protected data, and therefore should be done in random-access memory, Hence data cannot be sent directly to the host interface (such as SCSI or ATA bus), and should first be read into the RAM. Following this process the EDC/ECC status should be examined. In the case where the EDC/ECC status indicates no error, the data can be passed along. If the EDC/ECC mechanism indicates a correctable error, a corrective action should be taken before passing data further. If the EDC/ECC mechanism indicates an uncorrectable error, this error can optionally be passed to the host interface.
2. A write operation to the flash can also fail. However, this failure can be hidden from the host interface (such as SCSI, or ATA) by writing data onto another location. In order to repeat the write operation, data arriving from the host interface should be placed into the RAM buffer prior to commencing the write operation.
These 2 features inhibit direct data transfer between the host interface and the flash media. Using memory buffer as an intermediary normally takes two consecutive transfer operations: one to the memory and one from the memory. The necessity for these two consecutive data transfers is usually accepted as a necessary evil, and is therefore operative in most flash based storage systems.
There is thus a widely recognized need for, and it would be highly advantageous to have, a system that can enable both operations to and from the memory buffer simultaneously.
The present invention describes a method of performing these two transfer operations simultaneously in a flash-based storage system, thus improving the read and write performances of the system. The system of the present invention is differentiated from known alternative technologies and solutions due to the following factors:
i) The synchronization of host-to-memory and memory-to-flash transfers, and the correct recovery from different flash-related failure operations are complicated to implement, as described in present invention.
ii) Using a RAM buffer as an intermediary for the read and write operations is common, whereas the specific described method of performing these transfer operations simultaneously with a plurality of RAM buffers is unique in flash-based systems, and is thus innovative.
iii) The present invention enables the increase of sustained read and write performance practically twofold.